/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import dominio.Grado;
import java.util.List;
import javax.persistence.*;

/**
 *
 * @author eagle
 */
public class GradoDao {

    private EntityManager em;

    public List encontrarGrados() {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("SiaPersistencia");
        this.em = emf.createEntityManager();
        Query query = em.createQuery("SELECT g FROM Grado g");
        List<Grado> lista = query.getResultList();
        em.close();
        emf.close();
        return (lista);
    }

    public Grado actualizarGradoCursos(Integer id, int numeroCursos) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("SiaPersistencia");
        this.em = emf.createEntityManager();
        em.getTransaction().begin();
        Grado g = em.find(Grado.class, id); //se usa el entity manager para encontrarlo luego cuando se llame ActualizarGrado se hace commit y va a persistir el Grado actualizado
        if (g != null) {
            g.setNumeroCursos(numeroCursos);
        }
        em.getTransaction().commit();
        em.close();
        emf.close();
        return g;
    }

    public Grado actualizarGradoAsignaturas(Integer id, int numeroAsignaturas) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("SiaPersistencia");
        this.em = emf.createEntityManager();
        em.getTransaction().begin();
        Grado g = em.find(Grado.class, id); //se usa el entity manager para encontrarlo luego cuando se llame ActualizarGrado se hace commit y va a persistir el Grado actualizado
        if (g != null) {
            g.setNumeroasignaturas(numeroAsignaturas);
        }
        em.getTransaction().commit();
        em.close();
        emf.close();
        return g;
    }

    public EntityManager getEm() {
        return em;
    }

    public void setEm(EntityManager em) {
        this.em = em;
    }

    /****
     * los siguientes metodos fueron elaborados por Alexander Chaparro
     */
    public Grado encontrarGrado(Integer idGrado) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("SiaPersistencia");
        this.em = emf.createEntityManager();
        Grado g = em.find(Grado.class, idGrado);// con esta funcion se busca un dato por primary key, el primer parametro es nuestra clase entidad
        em.close();
        emf.close();
        return g;
    }

    public void crearGrado(Grado grado) {
        em.persist(grado);//con esta funcion lo guarda en la base de datos
    }

    public void eliminarGrado(Grado grado) {
        em.remove(grado);
    }
}
